﻿using System;
using System.Collections.Generic;

namespace OperationPlugins.Models
{
    internal sealed class GetPropertyValueEnvelope
    {
        private readonly IList<object> _returnValues = new List<object>();
 
        /// <summary>
        /// Initializes a new instance of the GetPropertyValueEnvelope class.
        /// </summary>
        /// <param name="model">The model object.</param>
        /// <param name="declaringType">The type that declares the property.</param>
        /// <param name="propertyName">The property name.</param>
        internal GetPropertyValueEnvelope(object model, Type declaringType, string propertyName)
        {
            Model = model;
            DeclaringType = declaringType;
            PropertyName = propertyName;
        }

        /// <summary>
        /// Gets the model object.
        /// </summary>
        internal object Model { private set; get; }

        /// <summary>
        /// Gets the type that declares the property.
        /// </summary>
        internal Type DeclaringType { private set; get; }

        /// <summary>
        /// Gets the property name.
        /// </summary>
        internal string PropertyName { private set; get; }

        internal IList<object> ReturnValues { get { return _returnValues; } } 
    }
}
